//package com.zf.flink;
//
//import org.apache.flink.configuration.Configuration;
//import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
//import org.redisson.Redisson;
//import org.redisson.api.RedissonClient;
//import org.redisson.config.Config;
//
//// 1. 自定义 Sink，仅保留可序列化字段
//public class RedisStringSink extends RichSinkFunction<String> {
//
//    // 不要放 RedissonClient 在这里！
//    private final String redisAddress;   // 可序列化
//    private transient RedissonClient client; // transient，不参与序列化
//
//    public RedisStringSink(String redisAddress) {
//        this.redisAddress = redisAddress;
//    }
//
//    @Override
//    public void open(Configuration parameters) {
//        // open 里再初始化，只在 TaskManager 端执行一次
//        Config config = new Config();
//        config.useSingleServer().setAddress(redisAddress);
//        this.client = Redisson.create(config);
//    }
//
//    @Override
//    public void invoke(String value, Context context) {
//        client.getBucket("user:last").set(value);
//    }
//
//    @Override
//    public void close() {
//        if (client != null) {
//            client.shutdown();
//        }
//    }
//}